package cn.vc.media.controller;

import cn.vc.basicmodule.entity.Result;
import cn.vc.media.service.MediaFileService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @description 媒资文件管理接口
 * @author Mr.M
 * @date 2022/9/6 11:29
 * @version 1.0
 */
@Api(value = "媒资文件管理接口", tags = "媒资文件管理接口")
@RestController
@RequestMapping("/upload")
//@PreAuthorize("hasAnyAuthority('ordinary')")
public class SmallFilesController {
    @Autowired
    private MediaFileService mediaFileService;

    @ApiOperation("上传头像图片")
    @RequestMapping(value = "/avatarfile")
    public Result<?> uploadAvatar(@RequestParam(value= "userId") Long userId,
                                  @RequestPart("filedata") MultipartFile filedata) throws IOException {
        // 准备上传文件的信息
        String fileName = filedata.getOriginalFilename(); // 原始文件名称
        long fileSize = filedata.getSize(); // 原始文件名称
        // 接收到文件了
        // 创建临时文件
        File tempFile = File.createTempFile("minio", ".temp");
        filedata.transferTo(tempFile);

        // 文件路径
        String localFilePath = tempFile.getAbsolutePath();
        // 调用service上传图片
        String url = mediaFileService.uploadAvatar(userId, fileName, localFilePath);

        return new Result<>(url!=null, url, null);
    }

    @ApiOperation("上传课程、文章图片")
    @PostMapping(value = "/coverfile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Result<?> uploadCover(@RequestPart("filedata") MultipartFile filedata) throws IOException {
        // 准备上传文件的信息
        String fileName = filedata.getOriginalFilename(); // 原始文件名称
        long fileSize = filedata.getSize(); // 原始文件名称
        // 接收到文件了
        // 创建临时文件
        File tempFile = File.createTempFile("minio", ".temp");
        filedata.transferTo(tempFile);

        // 文件路径
        String localFilePath = tempFile.getAbsolutePath();
        // 调用service上传图片
        String url = mediaFileService.uploadCover(fileName, localFilePath);

        return new Result<>(url!=null, url, null);
    }

}
